/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package DAO;

import bean.Periodico;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.List;
import java.util.logging.Level;
import java.util.logging.Logger;

/**
 *
 * @author fernando
 */
public class PeriodicoDao {

    private Conexao conexao;
    private PreparedStatement ps;
    private boolean sucess = false;

    public PeriodicoDao() {
        conexao = new ConexaoPostgres();
    }

    public boolean cadastrarPeriodico(Periodico periodico) {
        sucess = false;

        try {
            System.out.println("Cadastro Periodico: " + periodico.getTitulo());
            ps = conexao.getConnection().prepareStatement("INSERT INTO obra(titulo, issn_isbn, ano, volume, numero, tipo) VALUES (?, ?, ?, ?, ?, ?) ");
            ps.setString(1, periodico.getTitulo());
            ps.setString(2, periodico.getIssn_isbn());
            ps.setInt(3, periodico.getAnoPublicacao());
            ps.setInt(4, periodico.getVolume());
            ps.setInt(5, periodico.getNumero());
            ps.setString(6, "Periodico");
            ps.executeUpdate();
            conexao.closeConnection();

            sucess = true;
        } catch (SQLException ex) {
            conexao.closeConnection();
            Logger.getLogger(InstituicaoDao.class.getName()).log(Level.SEVERE, null, ex);
            return sucess;
        }

        conexao.closeConnection();
        return sucess;
    }

    public boolean alterarPeriodico(Periodico periodico) {
        sucess = false;


        try {

            ps = conexao.getConnection().prepareStatement("UPDATE obra SET titulo = ?, issn_isbn = ?, ano = ?, volume = ?, numero = ? where id = ?");

            ps.setString(1, periodico.getTitulo());
            ps.setString(2, periodico.getIssn_isbn());
            ps.setInt(3, periodico.getAnoPublicacao());
            ps.setInt(4, periodico.getVolume());
            ps.setInt(5, periodico.getNumero());
            ps.setInt(6, periodico.getId());
            ps.executeUpdate();
            conexao.closeConnection();

            sucess = true;

        } catch (SQLException ex) {
            conexao.closeConnection();
            Logger.getLogger(InstituicaoDao.class.getName()).log(Level.SEVERE, null, ex);
            return sucess;
        }

        conexao.closeConnection();
        return sucess;
    }

    public boolean removerPeriodico(Periodico periodico) {
        sucess = false;
        try {

            ps = conexao.getConnection().prepareStatement(" DELETE FROM obra WHERE id = ?");

            ps.setLong(1, (periodico.getId()));

            ps.executeUpdate();
            conexao.closeConnection();


            sucess = true;
        } catch (SQLException ex) {
            conexao.closeConnection();
            ex.printStackTrace();
            return sucess;
        }

        conexao.closeConnection();
        return sucess;
    }

    public ArrayList<Periodico> listarPeriodicos() {
        ArrayList<Periodico> periodicos = new ArrayList<Periodico>();
        try {
            ps = conexao.getConnection().prepareStatement("SELECT * FROM obra WHERE tipo = 'Periodico' ORDER BY titulo");
            ResultSet rs = ps.executeQuery();
            conexao.closeConnection();

            while (rs.next()) {
                Periodico p = new Periodico();

                p.setTitulo(rs.getString("titulo"));
                p.setIssn_isbn(rs.getString("issn_isbn"));
                p.setAnoPublicacao(rs.getInt("ano"));
                p.setNumero(rs.getInt("numero"));
                p.setVolume(rs.getInt("volume"));
                p.setId(rs.getInt("id"));

                periodicos.add(p);


            }
        } catch (SQLException ex) {
            conexao.closeConnection();
            Logger.getLogger(InstituicaoDao.class.getName()).log(Level.SEVERE, null, ex);
        }



        conexao.closeConnection();
        return periodicos;

    }

    public Periodico consultaPeriodico(int id) {
        PreparedStatement ps = null;
        Periodico p = null;
        try {
            p = new Periodico();
            ps = conexao.getConnection().prepareStatement("Select * from obra where id = ?; ");
            ps.setInt(1, id);
            ResultSet rs = ps.executeQuery();
            conexao.closeConnection();
            if (rs.next()) {

                p.setTitulo(rs.getString("titulo"));
                p.setIssn_isbn(rs.getString("issn_isbn"));
                p.setAnoPublicacao(rs.getInt("ano"));
                p.setNumero(rs.getInt("numero"));
                p.setVolume(rs.getInt("volume"));
                p.setId(rs.getInt("id"));
                p.setTipo(rs.getString("tipo"));

            }
        } catch (SQLException ex) {
            conexao.closeConnection();
            return p;

        }
        conexao.closeConnection();
        return p;
    }
}
